iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
Software Development

用作業系統讀懂另一半的OS系列 第 12

【2025鐵人賽】用作業系統讀懂另一半的OS:CPU Scheduling 03

  • 分享至 

  • xImage
  •  

接下來提到提的這兩個,是屬於昨天所講排成的融合版
話說,不是才稍微過個幾天,比較有太陽的日子。怎麼好像又有颱風要進來...
https://ithelp.ithome.com.tw/upload/images/20250812/201777643ndvept70I.jpg

Multilevel Queue Scheduling(多重隊列排程)

Multilevel Queue Scheduling 是一種將Ready Queue劃分成多個獨立子Queue的排程方式。系統會依據 process 的 特性(priority、process type、使用者類別、資源需求等),將它們分配到不同的隊列中。OS會根據不同類型的 process,把它們分到不同的Queue中。每個Queue就像一個「小型排程世界」,有自己的排程策略與規則。

https://ithelp.ithome.com.tw/upload/images/20250727/20177764fpfdGi78il.png

Multilevel Queue Scheduling有3個特性:
第一,每個隊列採用不同的排程演算法。像是:

  • Real-time → FCFS
  • Interactive → Round Robin
  • Batch → SJF

第二,OS會有一個固定優先權(Fixed-Priority Preemptive) 的規則:只要高優先的隊列有 process,就會搶佔低優先隊列的 CPU。如果高優先隊列空了,才會輪到低優先隊列。

第三,Time Slicing(時間切片分配):為了避免高優先隊列長期佔滿 CPU,可設定時間比例(如:高優先佔 50%、中優先 30%、低優先 20%)。這種方式可確保低優先隊列的 process 最終也能獲得 CPU。

Multilevel Feedback Queue Scheduling(MFLQ):多層回饋佇列排程

Multilevel Feedback Queue Scheduling(MLFQ)是一種高度靈活且自適應的 CPU 排程演算法。與 Multilevel Queue Scheduling最大的不同是:process 可以在不同的隊列之間移動,優先權會依據它的行為和等待時間動態調整。

而為了要達到「隊列之間移動」這件事,這邊要提一下MFLQ的核心:

第一,初始分配:所有新來的 process 一律從最高優先權隊列開始(通常為最短時間片的 Round Robin)。

第二,降級(Demotion):如果 process 在該層隊列的時間片(Time Quantum)內沒完成,就會被移到下一層優先權較低的隊列。

第三,升級(Promotion):如果低優先權隊列的 process 長時間沒被執行,系統會提升它的優先權(防止飢餓 Starvation)。

常見設計範例

這種機制使得排程系統能根據 process 的行為自動調整優先權與排程策略,達到平衡效能與公平性的目的。常見設計如下:

https://ithelp.ithome.com.tw/upload/images/20250728/20177764vPgyKhlVn4.png

  • Queue 0:Round Robin排成(Time Quantum = 8ms)
  • Queue 1:Round Robin排成(Time Quantum = 16ms)
  • Queue 2:FCFS

新 process 一律從最高優先 queue 開始(Queue 0)。如果一個 process 在其 quantum 用完時 還沒完成執行,就會被「降級」到下一層 queue。長時間沒被執行的 process 可以「升級」,提升其優先權(用於防止飢餓)。

然而,Multilevel Feedback Queue Scheduling的缺點如下:
第一,複雜度高:管理多層 queue 與調整規則需要精密設計。
第二,參數設定困難:quantum 長度、升降級規則不易調整到最優值。
第三,實作負擔重:實際在作業系統中實作需考量 context switch 成本與公平性策略。

這邊在硬塞一個補充進來ww

排程範圍(Contention Scope)

Contention Scope要討論的是:一條執行緒(Thread)到底是和誰在競爭 CPU 使用權?作業系統要如何決定哪個 thread 被排到 CPU 上?

而這個問題,就是Contention Scope。主要來說,Contention Scope可以可以分為兩種:

第一,行程層級競爭(Process-Contention Scope, PCS):同一個 process 裡的 threads 互相搶 CPU(由使用者層級排程器決定)

第二,系統層級競爭(System-Contention Scope, SCS):所有 thread(整個系統)都搶 CPU(由作業系統 kernel 決定)

如果用比喻的話,就有點像公司的升職競爭

  1. PCS就像部門內升遷,你跟自己部門(process)內的同事在搶一個升遷名額(CPU),這是部門內部自己排的順序。就算別的部門很閒,也跟你們搶不到 CPU。這樣升遷規則是「內部管理決定」。
  2. SCS就像公司整體升遷,全公司的人都來搶升遷名額(CPU),你不只要跟部門同事搶,還要跟整個公司的精英們競爭,誰能力強、運氣好就先升職。這是公司層級的競爭,由總公司(kernel)排定順序。

上一篇
2025鐵人賽】用作業系統讀懂另一半的OS:CPU Scheduling 02
下一篇
【2025鐵人賽】用作業系統讀懂另一半的OS:CPU Scheduling 04
系列文
用作業系統讀懂另一半的OS30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言